home *** CD-ROM | disk | FTP | other *** search
/ Aminet 52 / Aminet 52 (2002)(GTI - Schatztruhe)[!][Dec 2002].iso / Aminet / dev / c / Emperor.lha / Emperor / Projects / Tiger / Tiger.h < prev    next >
C/C++ Source or Header  |  2002-09-27  |  56KB  |  1,296 lines

  1. #include "Tiger_class.h"
  2. #include "Tiger_fonctions.h"
  3. #include <iostream.h>
  4.  
  5. #define AMONTMAX 15
  6. #define AVALMAX 8
  7. #define XOFFSET 40
  8. #define YOFFSET 40
  9.  
  10. ULONG noir=0;
  11. ULONG blanc=0;
  12. ULONG gris1=0;
  13. ULONG gris2=0;
  14. ULONG gris3=0;
  15. ULONG gris4=0;
  16. ULONG gris5=0;
  17. ULONG gris6=0;
  18. ULONG gris7=0;
  19. ULONG gris8=0;
  20. ULONG gris9=0;
  21. ULONG gris10=0;
  22. ULONG gris11=0;
  23. ULONG gris12=0;
  24. ULONG gris13=0;
  25. ULONG gris14=0;
  26.  
  27. struct Window *win=NULL;
  28. struct RastPort *winport=NULL;
  29. struct RastPort winport_noir;
  30. struct RastPort winport_blanc;
  31. struct RastPort winport_gris1;
  32. struct RastPort winport_gris2;
  33. struct RastPort winport_gris3;
  34. struct RastPort winport_gris4;
  35. struct RastPort winport_gris5;
  36. struct RastPort winport_gris6;
  37. struct RastPort winport_gris7;
  38. struct RastPort winport_gris8;
  39. struct RastPort winport_gris9;
  40. struct RastPort winport_gris10;
  41. struct RastPort winport_gris11;
  42. struct RastPort winport_gris12;
  43. struct RastPort winport_gris13;
  44. struct RastPort winport_gris14;
  45.  
  46. Object *winobj=NULL;
  47.  
  48. void Startup(void)
  49. {
  50.     pente=0.4;
  51.     pluie=450;
  52.     termite=0;
  53.     rayon=0;
  54.     imax=40;
  55.     jmax=40;
  56.     kmax=5;
  57.     zoom=1;
  58.     SetGadgetAttrs(Fuelgauge2, Window1, NULL, FUELGAUGE_Max, jmax, TAG_DONE);
  59.     SetGadgetAttrs(Fuelgauge3, Window1, NULL, FUELGAUGE_Max, kmax, TAG_DONE);
  60.     SetGadgetAttrs(Fuelgauge2, Window1, NULL, FUELGAUGE_Level, 0 , TAG_DONE);
  61.     SetGadgetAttrs(Fuelgauge3, Window1, NULL, FUELGAUGE_Level, 0 , TAG_DONE);
  62.     SetGadgetAttrs(Button3, Window1, NULL, GA_Disabled, TRUE, TAG_DONE);
  63.     SetGadgetAttrs(Button6, Window1, NULL, GA_Disabled, TRUE, TAG_DONE);
  64.     SetGadgetAttrs(Button7, Window1, NULL, GA_Disabled, TRUE, TAG_DONE);
  65.     SetGadgetAttrs(Button8, Window1, NULL, GA_Disabled, TRUE, TAG_DONE);
  66.     noir = ObtainBestPen(Screen1->ViewPort.ColorMap, 0x0FFFFFFF, 0x0FFFFFFF, 0x0FFFFFFF, OBP_Precision, PRECISION_EXACT, TAG_DONE);
  67.     blanc = ObtainBestPen(Screen1->ViewPort.ColorMap, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, OBP_Precision, PRECISION_EXACT, TAG_DONE);
  68.     gris1 = ObtainBestPen(Screen1->ViewPort.ColorMap, 0xeFFFFFFF, 0xeFFFFFFF, 0xeFFFFFFF, OBP_Precision, PRECISION_EXACT, TAG_DONE);
  69.     gris2 = ObtainBestPen(Screen1->ViewPort.ColorMap, 0xdfffffff, 0xdfffffff, 0xdfffffff, OBP_Precision, PRECISION_EXACT, TAG_DONE);
  70.     gris3 = ObtainBestPen(Screen1->ViewPort.ColorMap, 0xcfffffff, 0xcfffffff, 0xcfffffff, OBP_Precision, PRECISION_EXACT, TAG_DONE);
  71.     gris4 = ObtainBestPen(Screen1->ViewPort.ColorMap, 0xbfffffff, 0xbfffffff, 0xbfffffff, OBP_Precision, PRECISION_EXACT, TAG_DONE);
  72.     gris5 = ObtainBestPen(Screen1->ViewPort.ColorMap, 0xafffffff, 0xafffffff, 0xafffffff, OBP_Precision, PRECISION_EXACT, TAG_DONE);
  73.     gris6 = ObtainBestPen(Screen1->ViewPort.ColorMap, 0x9fffffff, 0x9fffffff, 0x9fffffff, OBP_Precision, PRECISION_EXACT, TAG_DONE);
  74.     gris7 = ObtainBestPen(Screen1->ViewPort.ColorMap, 0x8fffffff, 0x8fffffff, 0x8fffffff, OBP_Precision, PRECISION_EXACT, TAG_DONE);
  75.     gris8 = ObtainBestPen(Screen1->ViewPort.ColorMap, 0x7fffffff, 0x7fffffff, 0x7fffffff, OBP_Precision, PRECISION_EXACT, TAG_DONE);
  76.     gris9 = ObtainBestPen(Screen1->ViewPort.ColorMap, 0x6fffffff, 0x6fffffff, 0x6fffffff, OBP_Precision, PRECISION_EXACT, TAG_DONE);
  77.     gris10 = ObtainBestPen(Screen1->ViewPort.ColorMap, 0x5fffffff, 0x5fffffff, 0x5fffffff, OBP_Precision, PRECISION_EXACT, TAG_DONE);
  78.     gris11 = ObtainBestPen(Screen1->ViewPort.ColorMap, 0x4fffffff, 0x4fffffff, 0x4fffffff, OBP_Precision, PRECISION_EXACT, TAG_DONE);
  79.     gris12 = ObtainBestPen(Screen1->ViewPort.ColorMap, 0x3fffffff, 0x3fffffff, 0x3fffffff, OBP_Precision, PRECISION_EXACT, TAG_DONE);
  80.     gris13 = ObtainBestPen(Screen1->ViewPort.ColorMap, 0x2fffffff, 0x2fffffff, 0x2fffffff, OBP_Precision, PRECISION_EXACT, TAG_DONE);
  81.     gris14 = ObtainBestPen(Screen1->ViewPort.ColorMap, 0x1fffffff, 0x1fffffff, 0x1fffffff, OBP_Precision, PRECISION_EXACT, TAG_DONE);
  82. }
  83.  
  84. void Shutdown(void)
  85. {
  86.     ReleasePen(Screen1->ViewPort.ColorMap, noir);
  87.     ReleasePen(Screen1->ViewPort.ColorMap, blanc);
  88.     ReleasePen(Screen1->ViewPort.ColorMap, gris1);
  89.     ReleasePen(Screen1->ViewPort.ColorMap, gris2);
  90.     ReleasePen(Screen1->ViewPort.ColorMap, gris3);
  91.     ReleasePen(Screen1->ViewPort.ColorMap, gris4);
  92.     ReleasePen(Screen1->ViewPort.ColorMap, gris5);
  93.     ReleasePen(Screen1->ViewPort.ColorMap, gris6);
  94.     ReleasePen(Screen1->ViewPort.ColorMap, gris7);
  95.     ReleasePen(Screen1->ViewPort.ColorMap, gris8);
  96.     ReleasePen(Screen1->ViewPort.ColorMap, gris9);
  97.     ReleasePen(Screen1->ViewPort.ColorMap, gris10);
  98.     ReleasePen(Screen1->ViewPort.ColorMap, gris11);
  99.     ReleasePen(Screen1->ViewPort.ColorMap, gris12);
  100.     ReleasePen(Screen1->ViewPort.ColorMap, gris13);
  101.     ReleasePen(Screen1->ViewPort.ColorMap, gris14);
  102. }
  103.  
  104. void Window1_ShowWindow_Event(void)
  105. {
  106. }
  107.  
  108. void Window1_CloseWindow_Event(void)
  109. {
  110.     Emperor_QuitProgram();
  111. }
  112.  
  113. void Menu_Quit1_MenuPick_Event(void)
  114. {
  115.     Emperor_QuitProgram();
  116. }
  117.  
  118. void Menu_Information1_MenuPick_Event(void)
  119. {
  120.     Inforequest1();
  121. }
  122.  
  123. void String1_GadgetUp_Event(void)
  124. {
  125.     pente = atof(Emperor_GetGadgetAttr(String1));
  126.     if (pente<0.1 || pente >1.5)
  127.     {
  128.         Emperor_SetGadgetAttr(String1, "0.0");
  129.         pente=0.0;
  130.     }
  131.     SetGadgetAttrs(Fuelgauge2, Window1, NULL, FUELGAUGE_Level, 0 , TAG_DONE);
  132.     SetGadgetAttrs(Fuelgauge3, Window1, NULL, FUELGAUGE_Level, 0 , TAG_DONE);
  133. }
  134.  
  135. void Integer1_GadgetUp_Event(void)
  136. {
  137.     pluie = atoi(Emperor_GetGadgetAttr(Integer1));
  138.     SetGadgetAttrs(Fuelgauge2, Window1, NULL, FUELGAUGE_Level, 0 , TAG_DONE);
  139.     SetGadgetAttrs(Fuelgauge3, Window1, NULL, FUELGAUGE_Level, 0 , TAG_DONE);
  140. }
  141.  
  142. void Integer2_GadgetUp_Event(void)
  143. {
  144.     termite = atoi(Emperor_GetGadgetAttr(Integer2));
  145.     SetGadgetAttrs(Fuelgauge2, Window1, NULL, FUELGAUGE_Level, 0 , TAG_DONE);
  146.     SetGadgetAttrs(Fuelgauge3, Window1, NULL, FUELGAUGE_Level, 0 , TAG_DONE);
  147. }
  148.  
  149. void Integer3_GadgetUp_Event(void)
  150. {
  151.     rayon = atoi(Emperor_GetGadgetAttr(Integer3));
  152.     SetGadgetAttrs(Fuelgauge2, Window1, NULL, FUELGAUGE_Level, 0 , TAG_DONE);
  153.     SetGadgetAttrs(Fuelgauge3, Window1, NULL, FUELGAUGE_Level, 0 , TAG_DONE);
  154. }
  155.  
  156. void Integer4_GadgetUp_Event(void)
  157. {
  158.     imax = atoi(Emperor_GetGadgetAttr(Integer4));
  159.     SetGadgetAttrs(Fuelgauge2, Window1, NULL, FUELGAUGE_Level, 0 , TAG_DONE);
  160.     SetGadgetAttrs(Fuelgauge3, Window1, NULL, FUELGAUGE_Level, 0 , TAG_DONE);
  161. }
  162.  
  163. void Integer5_GadgetUp_Event(void)
  164. {
  165.     jmax = atoi(Emperor_GetGadgetAttr(Integer5));
  166.     SetGadgetAttrs(Fuelgauge2, Window1, NULL, FUELGAUGE_Max, jmax, TAG_DONE);
  167.     SetGadgetAttrs(Fuelgauge2, Window1, NULL, FUELGAUGE_Level, 0 , TAG_DONE);
  168.     SetGadgetAttrs(Fuelgauge3, Window1, NULL, FUELGAUGE_Level, 0 , TAG_DONE);
  169. }
  170.  
  171. void Integer6_GadgetUp_Event(void)
  172. {
  173.     kmax = atoi(Emperor_GetGadgetAttr(Integer6));
  174.     SetGadgetAttrs(Fuelgauge3, Window1, NULL, FUELGAUGE_Max, kmax, TAG_DONE);  
  175.     SetGadgetAttrs(Fuelgauge2, Window1, NULL, FUELGAUGE_Level, 0 , TAG_DONE);
  176.     SetGadgetAttrs(Fuelgauge3, Window1, NULL, FUELGAUGE_Level, 0 , TAG_DONE);
  177. }
  178.  
  179. void Checkbox1_GadgetUp_Event(void)         //sauver MNA
  180. {
  181.     if(Emperor_GetGadgetAttr(Checkbox1))
  182.     {
  183.         MNA=TRUE;
  184.     }
  185. }
  186.  
  187. void Checkbox2_GadgetUp_Event(void)
  188. {
  189.     if(Emperor_GetGadgetAttr(Checkbox2))
  190.     {
  191.         previsual=TRUE;
  192.     }
  193. }
  194.  
  195. void Slider1_GadgetUp_Event(void)
  196. {
  197.     STRPTR temp=0;
  198.     temp=Emperor_GetGadgetAttr(Slider1);
  199.     Emperor_SetGadgetAttr(String2, temp);
  200.     zoom=stringtoint(temp)
  201. }
  202.  
  203. void Button2_GadgetUp_Event(void)            //valeurs moyennes
  204. {
  205.     pente=0.4;
  206.     pluie=450;
  207.     imax=40;
  208.     jmax=40;
  209.     kmax=5;
  210.     zoom=1;
  211.     Emperor_SetGadgetAttr(String1, "0.4");
  212.     SetGadgetAttrs(Integer1, Window1, NULL, INTEGER_Number, 450, TAG_DONE);
  213.     SetGadgetAttrs(Integer4, Window1, NULL, INTEGER_Number, 40, TAG_DONE);
  214.     SetGadgetAttrs(Integer5, Window1, NULL, INTEGER_Number, 40, TAG_DONE);
  215.     SetGadgetAttrs(Integer6, Window1, NULL, INTEGER_Number, 5, TAG_DONE);
  216.     SetGadgetAttrs(Fuelgauge2, Window1, NULL, FUELGAUGE_Max, jmax, TAG_DONE);
  217.     SetGadgetAttrs(Fuelgauge3, Window1, NULL, FUELGAUGE_Max, kmax, TAG_DONE);
  218.     SetGadgetAttrs(Fuelgauge2, Window1, NULL, FUELGAUGE_Level, 0 , TAG_DONE);
  219.     SetGadgetAttrs(Fuelgauge3, Window1, NULL, FUELGAUGE_Level, 0 , TAG_DONE);
  220.     SetGadgetAttrs(Slider1, Window1, NULL, SLIDER_Level, 1, TAG_DONE);
  221.     STRPTR temp2=0;
  222.     temp2=Emperor_GetGadgetAttr(Slider1);
  223.     Emperor_SetGadgetAttr(String2, temp2);
  224. }
  225.  
  226. void Button1_GadgetUp_Event(void)
  227. {   
  228.     int i=0, j=0, k=0, l=0, ii=0, jj=0,
  229.     rayon_max=0, random=0, valeur_max=0, resolution=0, a=0, b=0, kk=0, max_tick=0,
  230.     temp=0, combien=0, memoire=0, loop_tick=0, temp_tick=0, amont=0, aval=0, voisins=0;
  231.     float nelevation=0.0, hauteur=0.0, temp_float=0.0, coef_prox=0.0;
  232.     STRPTR tick=0;
  233.     BOOL fermer=FALSE, interrupt=FALSE;
  234.     FILE *fz;
  235.  
  236.     valeur_max=15;
  237.     hauteur=5.0;
  238.     resolution=2;
  239.  
  240.     Tableau <Cellule> C(imax, jmax, kmax+1);
  241.  
  242.     winobj = (Object*) WindowObject,
  243.             WA_Left,    100,
  244.             WA_Top,     100,
  245.             WA_Width,   (imax*zoom)+XOFFSET,
  246.             WA_Height,  (jmax*zoom)+YOFFSET,
  247.             WA_DragBar, TRUE,
  248.             //WA_Title,   "Sortie graphique",
  249.             WA_PubScreen, Screen1,
  250.             //WA_CloseGadget,  TRUE,
  251.             WA_DepthGadget, TRUE,
  252.             WA_SuperBitMap, TRUE,
  253.             WA_IDCMP,  IDCMP_GADGETDOWN | IDCMP_GADGETUP | IDCMP_GADGETHELP | IDCMP_MENUPICK | IDCMP_MENUHELP | IDCMP_CLOSEWINDOW | IDCMP_ACTIVEWINDOW | IDCMP_INACTIVEWINDOW | IDCMP_RAWKEY | IDCMP_VANILLAKEY | IDCMP_MOUSEBUTTONS | IDCMP_MOUSEMOVE | IDCMP_NEWSIZE | IDCMP_CHANGEWINDOW | IDCMP_SIZEVERIFY | IDCMP_REFRESHWINDOW | IDCMP_INTUITICKS,
  254.             WA_RMBTrap, TRUE,
  255.     EndWindow;
  256.  
  257.     SetGadgetAttrs(Fuelgauge2, Window1, NULL, FUELGAUGE_Level, 0 , TAG_DONE);
  258.     SetGadgetAttrs(Fuelgauge3, Window1, NULL, FUELGAUGE_Level, 0 , TAG_DONE);
  259.     if(previsual)
  260.     {
  261.         SetGadgetAttrs(Button3, Window1, NULL, GA_Disabled, FALSE, TAG_DONE);
  262.     }
  263.     else
  264.     {
  265.         SetGadgetAttrs(Button3, Window1, NULL, GA_Disabled, TRUE, TAG_DONE);
  266.     }
  267.     SetGadgetAttrs(String1, Window1, NULL, GA_Disabled, TRUE, TAG_DONE);
  268.     SetGadgetAttrs(Integer1, Window1, NULL, GA_Disabled, TRUE, TAG_DONE);
  269.     SetGadgetAttrs(Integer2, Window1, NULL, GA_Disabled, TRUE, TAG_DONE);
  270.     SetGadgetAttrs(Integer3, Window1, NULL, GA_Disabled, TRUE, TAG_DONE);
  271.     SetGadgetAttrs(Integer4, Window1, NULL, GA_Disabled, TRUE, TAG_DONE);
  272.     SetGadgetAttrs(Integer5, Window1, NULL, GA_Disabled, TRUE, TAG_DONE);
  273.     SetGadgetAttrs(Integer6, Window1, NULL, GA_Disabled, TRUE, TAG_DONE);
  274.     SetGadgetAttrs(Button1, Window1, NULL, GA_Disabled, TRUE, TAG_DONE);
  275.     SetGadgetAttrs(Button2, Window1, NULL, GA_Disabled, TRUE, TAG_DONE);
  276.     SetGadgetAttrs(Slider1, Window1, NULL, GA_Disabled, TRUE, TAG_DONE);
  277.     SetGadgetAttrs(Checkbox1, Window1, NULL, GA_Disabled, TRUE, TAG_DONE);
  278.     SetGadgetAttrs(Checkbox2, Window1, NULL, GA_Disabled, TRUE, TAG_DONE);
  279.  
  280.     if(previsual)
  281.     {
  282.         win = RA_OpenWindow (winobj);
  283.         winport = win->RPort;
  284.         winport_noir = *win->RPort;
  285.         winport_blanc = *win->RPort;
  286.         winport_gris1 = *win->RPort;
  287.         winport_gris2 = *win->RPort;
  288.         winport_gris3 = *win->RPort;
  289.         winport_gris4 = *win->RPort;
  290.         winport_gris5 = *win->RPort;
  291.         winport_gris6 = *win->RPort;
  292.         winport_gris7 = *win->RPort;
  293.         winport_gris8 = *win->RPort;
  294.         winport_gris9 = *win->RPort;
  295.         winport_gris10 = *win->RPort;
  296.         winport_gris11 = *win->RPort;
  297.         winport_gris12 = *win->RPort;
  298.         winport_gris13 = *win->RPort;
  299.         winport_gris14 = *win->RPort;
  300.         SetAPen( &winport_noir, noir );
  301.         SetAPen( &winport_blanc, blanc );
  302.         SetAPen( &winport_gris1, gris1 );
  303.         SetAPen( &winport_gris2, gris2 );
  304.         SetAPen( &winport_gris3, gris3 );
  305.         SetAPen( &winport_gris4, gris4 );
  306.         SetAPen( &winport_gris5, gris5 );
  307.         SetAPen( &winport_gris6, gris6 );
  308.         SetAPen( &winport_gris7, gris7 );
  309.         SetAPen( &winport_gris8, gris8 );
  310.         SetAPen( &winport_gris9, gris9 );
  311.         SetAPen( &winport_gris10, gris10 );
  312.         SetAPen( &winport_gris11, gris11 );
  313.         SetAPen( &winport_gris12, gris12 );
  314.         SetAPen( &winport_gris13, gris13 );
  315.         SetAPen( &winport_gris14, gris14 );
  316.     }
  317.  
  318. /*appel au constructeur*/
  319.     
  320.     for(k=0; k<=kmax; k++)
  321.     {                                     
  322.         for(j=0; j<jmax; j++)             
  323.         {                                 
  324.             for(i=0; i<imax; i++)         
  325.             {                             
  326.                 C(i,j,k);
  327.             }                             
  328.         }                                 
  329.     }
  330.  
  331. /*remplissage aléatoire de la génération 0*/  
  332.  
  333.     srand((unsigned) time(NULL));
  334.     for(j=0; j<jmax; j++)                     
  335.     {                                         
  336.         for(i=0; i<imax; i++)                 
  337.         {                                     
  338.             random=rand()%valeur_max;         
  339.             C(i,j,0).set_valeur(random);      
  340.         }                                                              
  341.     }
  342.  
  343. /*termitisation et élévation*/  
  344.  
  345.     int x=0, y=0, r=0, tempr=0;
  346.     float alpha=0.0; //tempx=0.0, tempy=0.0, arrx=0.0, arry=0.0;
  347.     rayon_max=(int)rayon;
  348.     //cout <<"début des termites" <<endl;
  349.     for(int t=0; t<termite; t++)  
  350.     {                             
  351.         escape:
  352.         temp=0;
  353.         r=0;
  354.         temp=imax-(2*rayon_max);              //prendre les coordonnées i et j
  355.         i=(rand()%temp)+rayon_max;                   //aléatoirement pour chaque termitière
  356.         cout <<i <<endl;
  357.         temp=jmax-(2*rayon_max);
  358.         j=(rand()%temp)+rayon_max;
  359.         cout <<j <<endl;
  360.         random=rand()%kmax;
  361.         for(tempr=1; tempr<=rayon_max; tempr++)
  362.         {
  363.             for(alpha=0.0; alpha<2*PI; alpha+=(2*PI)/(tempr*8))     //8 -> facteur qui permet d'avoir une couverture suffisante
  364.             {
  365.                 circle_param(tempr, i, j, x, y, alpha);
  366.                 //cout <<x <<" " <<y <<endl;
  367.                 if(C(x,y,k).retour_influence())
  368.                 {
  369.                     goto escape;
  370.                 }
  371.             }
  372.         }
  373.         for(k=0; k<=kmax; k++)
  374.         {
  375.             C(i,j,k).set_termite(TRUE);
  376.             C(i,j,k).set_elevation(10/resolution);
  377.             C(i,j,k).set_normal(FALSE);
  378.             if(r!=0)
  379.             {
  380.                 for(tempr=1; tempr<=r; tempr++)
  381.                 {
  382.                     for(alpha=0.0; alpha<2*PI; alpha+=(2*PI)/(tempr*8))
  383.                     {
  384.                         circle_param(tempr, i, j, x, y, alpha);
  385.                         C(x,y,k).set_influence(TRUE);
  386.                         C(x,y,k).set_normal(FALSE);
  387.                         C(x,y,k).set_elevation(5/(resolution*tempr));
  388.                         for(ii=x-1; ii<=x+1; ii++)
  389.                         {
  390.                             for(jj=y-AMONTMAX; jj<=y+AVALMAX; jj++)
  391.                             {
  392.                                 C(ii,jj,k).set_normal(FALSE);
  393.                             }
  394.                         }
  395.                     }
  396.                 }
  397.             }
  398.             if(k!=0 && (k%10)==0)                //toutes les 10 générations
  399.             {
  400.                 //cout <<"incrémentation à " <<k <<endl;
  401.                 if(r==rayon_max)       //tout remettre à zéro
  402.                 {
  403.                     //cout <<"rayon max atteint" <<endl;
  404.                     C(i,j,k).set_termite(FALSE);
  405.                     C(i,j,k).set_elevation(0);
  406.                     C(i,j,k).set_normal(TRUE);
  407.                     for(tempr=1; tempr<=r; tempr++)
  408.                     {
  409.                         for(alpha=0.0; alpha<2*PI; alpha+=(2*PI)/(tempr*8))
  410.                         {
  411.                             circle_param(tempr, i, j, x, y, alpha);
  412.                             C(x,y,k).set_influence(FALSE);
  413.                             C(x,y,k).set_normal(TRUE);
  414.                             C(x,y,k).set_elevation(0);
  415.                             for(ii=x-1; ii<=x+1; ii++)
  416.                             {
  417.                                 for(jj=y-AMONTMAX; jj<=y+AVALMAX; jj++)
  418.                                 {
  419.                                     C(ii,jj,k).set_normal(TRUE);
  420.                                 }
  421.                             }
  422.                         }
  423.                     }
  424.                     goto escape2;
  425.                 }
  426.                 r++;
  427.             }
  428.         }
  429.         escape2:
  430.         //cout <<"fin des termites" <<endl;
  431.     }
  432.  
  433. /*sortie test*/
  434.  
  435.     //k=choix_gen[l];
  436.     /*char test[]="test.pgm";
  437.     //strcpy(MNA, pioche_MNA(k));
  438.     fz = fopen(test, "w");
  439.     fputs ("P2\n", fz);
  440.     fputs ("# ", fz);
  441.     fputs(test, fz);
  442.     fputs ("  \n", fz);
  443.     fputs (inttostring(imax), fz);
  444.     fputs ("  ", fz);
  445.     fputs (inttostring(jmax), fz);
  446.     fputs ("  \n255\n", fz);
  447.     for(j=0; j<jmax; j++)
  448.     {
  449.         for(i=0; i<imax; i++)
  450.         {
  451.             if(C(i,j,40).retour_normal())
  452.             {
  453.                 fputs(inttostring(0), fz);
  454.             }
  455.             else
  456.             {
  457.                 fputs(inttostring(255), fz);
  458.             }
  459.             fputs("  ", fz);
  460.         }
  461.         fputs(" \n", fz);
  462.     }
  463.     //delete [] test;
  464.     fclose(fz);*/
  465.  
  466. /*fin de sortie test*/
  467.  
  468. /*calcul des pentes et MNA*/   
  469.  
  470.     for(k=0; k<=kmax; k++)
  471.     {                                                             
  472.         for(j=0; j<jmax; j++)                                     
  473.         {                                                         
  474.             for(i=0; i<imax; i++)                                 
  475.             {                                                                
  476.                 C(i,j,k).set_pente(pente);                    
  477.                 C(i,j,k).set_altitude(j, resolution);         
  478.                 if(C(i,j,k).retour_influence()==1)      
  479.                 {                                             
  480.                     temp_float=0.0;
  481.                     temp_float=C(i,j,k).retour_altitude()-C(i,j-1,k)
  482.                     .retour_altitude();                           
  483.                     C(i,j,k).set_pente(temp_float);
  484.                 }
  485.                 if(C(i,j-1,k).retour_influence()==TRUE &&
  486.                 C(i,j,k).retour_influence()==FALSE)
  487.                 {                                        
  488.                     temp_float=0.0;
  489.                     temp_float=C(i,j,k).retour_altitude()-
  490.                     C(i,j-1,k).retour_altitude();        
  491.                     C(i,j,k).set_pente(temp_float);
  492.                 }                                        
  493.             }
  494.         }
  495.     }
  496.     if(MNA)
  497.     {               
  498.         int choix_gen[101]={0}, buffer=0;
  499.         char *MNA=0;
  500.         float minimum=0.0, maximum=0.0, difference=0.0;
  501.         minimum=10000.0;                           //sinon minimum reste à 0
  502.         for(k=0; k<=kmax; k++)                                
  503.         {                                                     
  504.             for(j=0; j<jmax; j++)                             
  505.             {                                                 
  506.                 for(i=0; i<imax; i++)                         
  507.                 {                                             
  508.                     temp_float=C(i,j,k).retour_altitude();
  509.                     if(temp_float>maximum)
  510.                         maximum=temp_float;
  511.                     if(temp_float<minimum)
  512.                         minimum=temp_float;
  513.                 }                                             
  514.             }                                                                
  515.         }                                                            
  516.         difference=maximum-minimum;                           
  517.         
  518.         for(i=0; i<=kmax; i++)    
  519.         {                         
  520.             choix_gen[i]=i;       
  521.         }                         
  522.         for(l=0; l<kmax; l++)
  523.         {                                                           
  524.             k=choix_gen[l];                                         
  525.             MNA=new char[10];                                       
  526.             strcpy(MNA, pioche_MNA(k));                             
  527.             fz = fopen(MNA, "w");
  528.             fputs ("P2\n", fz);
  529.             fputs ("# ", fz);
  530.             fputs(MNA, fz);
  531.             fputs ("  \n", fz);
  532.             fputs (inttostring(imax), fz);
  533.             fputs ("  ", fz);
  534.             fputs (inttostring(jmax), fz);
  535.             fputs ("  \n255\n", fz);
  536.             for(j=0; j<jmax; j++)
  537.             {
  538.                 for(i=0; i<imax; i++)
  539.                 {
  540.                     fputs(inttostring(int(((C(i,j,k).retour_altitude()-minimum)/difference)*255)), fz);
  541.                     fputs("  ", fz);
  542.                 }
  543.                 fputs(" \n", fz);
  544.             }
  545.             delete [] MNA;
  546.             fclose(fz);
  547.         }
  548.     }
  549.  
  550. /*début de la fonction de transition*/  
  551.  
  552.     if(kmax!=0)
  553.     {                                 
  554.         int n=0, somme1=0, nvaleur=0, coef_amont=-1, coef_aval=1;
  555.         BOOL interrupt1=FALSE, interrupt2=FALSE, sens1=FALSE, sens2=FALSE;
  556.         max_tick=200;
  557.  
  558.         for(k=0; k<kmax; k++)   
  559.         {                                                              
  560.             for(j=0; j<jmax; j++)
  561.             {                                                          
  562.                 for(i=0;i<imax; i++)                                   
  563.                 {                    
  564.                     if(C(i,j,k).retour_termite() || C(i,j,k).retour_influence()!=0)
  565.                     {
  566.                         //C(i,j,k).set_valeur(0);
  567.                         C(i,j,k+1).set_valeur(0);
  568.                         goto escape_termite;
  569.                     }
  570.                     
  571.                     if(j<AMONTMAX)
  572.                     {
  573.                         for(ii=i-1; ii<=i+1; ii++)
  574.                         {
  575.                             for(jj=-1; jj>=j-AMONTMAX; jj--)
  576.                             {
  577.                                 C(ii,jj,k).set_altitude(C(ii,jj+1,k)
  578.                                 .retour_altitude()+(pente/resolution));
  579.                                 //cout <<C(ii,jj,k).retour_altitude() <<endl;
  580.                             }
  581.                         }
  582.                     }
  583.  
  584.                     if(j>(jmax-1-AVALMAX))
  585.                     {
  586.                         for(ii=i-1; ii<=i+1; ii++)
  587.                         {
  588.                             for(jj=jmax; jj<=j+AVALMAX; jj++)
  589.                             {
  590.                                 C(ii,jj,k).set_altitude(C(ii,jj-1,k)
  591.                                 .retour_altitude()-(pente/resolution));
  592.                             }
  593.                         }
  594.                     }
  595.  
  596.                     /*si la cellule est normale -> matrice de convolution */
  597.  
  598.                     if(C(i,j,k).retour_normal())
  599.                     {
  600.  
  601.                         /*partie en amont*/
  602.                         coef_aval=1;
  603.  
  604.                         amont=0;
  605.                         for(ii=i-1; ii<=i+1; ii++)
  606.                         {
  607.                             for(jj=j; jj>j-AMONTMAX; jj--)
  608.                             {
  609.                                 if(jj<=0)
  610.                                 {
  611.                                     coef_prox=(float(AMONTMAX)-float(j+abs(jj)))/float(AMONTMAX);
  612.                                 }
  613.                                 if(jj>0)
  614.                                 {
  615.                                     coef_prox=(float(AMONTMAX)-float(j-jj))/float(AMONTMAX);
  616.                                 }
  617.                                 if(C(ii,jj,k).retour_altitude()<C(ii,jj-1,k).retour_altitude())             //la pente va en montant
  618.                                 {
  619.                                     if((ii==-1 && jj==-1) || (ii==1 && jj==-1))
  620.                                     {
  621.                                         coef_amont=0;
  622.                                     }
  623.                                     else
  624.                                     {
  625.                                         coef_amont=-1;
  626.                                     }
  627.                                     amont+=(C(ii,jj-1,k).retour_valeur()+norm_pente(C(ii,jj-1,k).retour_pente())+norm_pluie(pluie))*(coef_amont)*(coef_prox);
  628.                                 }
  629.                                 /*if(C(ii,jj,k).retour_altitude()>C(ii,jj-1,k).retour_altitude() )             //la pente va en descendant
  630.                                 {
  631.                                     amont+=(C(ii,jj-1,k).retour_valeur()+norm_pente(C(ii,jj-1,k).retour_pente())+norm_pluie(pluie))*(coef_amont)*(coef_prox);
  632.                                 }*/
  633.                             }
  634.                         }
  635.                         //cout <<amont <<endl;
  636.  
  637.                         /*fin d'amont*/
  638.  
  639.                         /*voisins*/
  640.  
  641.                         voisins=0;
  642.                         for(ii=i-2; ii<=i+2; ii++)
  643.                         {
  644.                             if(ii!=i)
  645.                             {
  646.                                 voisins+=C(ii,jj,k).retour_valeur();
  647.                             }
  648.                         }
  649.                         //cout <<voisins <<endl;
  650.  
  651.                         /*fin de voisins*/
  652.  
  653.                         /*partie en aval*/
  654.  
  655.                         aval=0;
  656.                         for(ii=i-1; ii<=i+1; ii++)
  657.                         {
  658.                             for(jj=j; jj<j+AVALMAX; jj++)
  659.                             {
  660.                                 coef_prox=(float(AVALMAX)-(float(jj)-float(j)))/float(AVALMAX);
  661.                                 if(C(ii,jj+1,k).retour_altitude()<C(ii,jj,k).retour_altitude())                //la pente va en descendant
  662.                                 {
  663.                                     aval+=(C(ii,jj+1,k).retour_valeur()+norm_pente(C(ii,jj+1,k).retour_pente())+norm_pluie(pluie))*(coef_aval)*(coef_prox);
  664.                                 }
  665.                                 /*if(C(ii,jj+1,k).retour_altitude()>C(ii,jj,k).retour_altitude())                 //la pente va en montant
  666.                                 {
  667.                                     aval+=(C(ii,jj+1,k).retour_valeur()+norm_pente(C(ii,jj+1,k).retour_pente())+norm_pluie(pluie))*(coef_aval)*(coef_prox);
  668.                                 }*/
  669.                             }
  670.                         }
  671.                         //cout <<aval <<endl;
  672.  
  673.                         /*fin d'aval*/
  674.                     }
  675.  
  676.                     /* si la cellule n'est pas normale -> changement des coefficients */
  677.  
  678.                     else
  679.                     {
  680.                         coef_amont=1;
  681.                         coef_aval=-1;
  682.                         //cout <<"cellule pas normale" <<endl;
  683.                         /*partie en amont*/
  684.  
  685.                         amont=0;
  686.                         for(ii=i-1; ii<=i+1; ii++)  
  687.                         {
  688.                             for(jj=j; jj>j-AMONTMAX; jj--)
  689.                             {
  690.                                 /*if((ii==-1 && jj==-1) || (ii==1 && jj==-1))
  691.                                 {
  692.                                     coef_amont=0;
  693.                                 }
  694.                                 else
  695.                                 {
  696.                                     coef_amont=-1;
  697.                                 }*/
  698.                                 if(jj<=0)
  699.                                 {
  700.                                     coef_prox=(float(AMONTMAX)-float(j+abs(jj)))/float(AMONTMAX);
  701.                                 }
  702.                                 if(jj>0)
  703.                                 {
  704.                                     coef_prox=(float(AMONTMAX)-float(j-jj))/float(AMONTMAX);
  705.                                 }
  706.                                 if(C(ii,jj,k).retour_altitude()<C(ii,jj-1,k).retour_altitude())             //la pente va en montant
  707.                                 {
  708.                                     //cout <<"termitière amont" <<endl;
  709.                                     if(C(ii,jj-1,k).retour_normal())  //si les cellules voisines deviennent normales -> arrêt
  710.                                     {
  711.                                         goto hop1;
  712.                                     }
  713.                                     amont+=(C(ii,jj-1,k).retour_valeur()+norm_pente(C(ii,jj-1,k).retour_pente())+norm_pluie(pluie))*(1);//(coef_prox);
  714.                                 }
  715.                                 /*if(C(ii,jj,k).retour_altitude()>C(ii,jj-1,k).retour_altitude() )             //la pente va en descendant
  716.                                 {
  717.                                     if(C(ii,jj-1,k).retour_normal())  //si les cellules voisines deviennent normales -> arrêt
  718.                                     {
  719.                                         goto hop1;
  720.                                     }
  721.                                     amont+=(C(ii,jj-1,k).retour_valeur()+norm_pente(C(ii-1,jj,k).retour_pente())+norm_pluie(pluie))*(coef_amont)*(coef_prox);
  722.                                 }*/
  723.                             }
  724.                         }
  725.                         hop1:
  726.  
  727.                         /*fin d'amont*/
  728.  
  729.                         /*voisins*/
  730.  
  731.                         voisins=0;
  732.                         for(ii=i-2; ii<=i+2; ii++)
  733.                         {
  734.                             if(ii!=i)
  735.                             {
  736.                                 voisins+=C(ii,jj,k).retour_valeur();
  737.                             }
  738.                         }
  739.  
  740.                         /*fin de voisins*/
  741.  
  742.                         /*partie en aval*/
  743.  
  744.                         aval=0;
  745.                         for(ii=i-1; ii<=i+1; ii++)
  746.                         {
  747.                             for(jj=j; jj<j+AVALMAX; jj++)
  748.                             {
  749.                                 coef_prox=(float(AVALMAX)-(float(jj)-float(j)))/float(AVALMAX);
  750.                                 if(C(ii,jj+1,k).retour_altitude()<C(ii,jj,k).retour_altitude())                //la pente va en descendant
  751.                                 {
  752.                                     //cout <<"termitière aval" <<endl;
  753.                                     if(C(ii,jj+1,k).retour_normal())           //si la pente change de signe ->arret
  754.                                     {
  755.                                         goto hop2;
  756.                                     }
  757.                                     aval+=(C(ii,jj+1,k).retour_valeur()+norm_pente(C(ii,jj+1,k).retour_pente())+norm_pluie(pluie))*(-1);//(coef_prox);
  758.                                 }
  759.                                 /*if(C(ii,jj+1,k).retour_altitude()>C(ii,jj,k).retour_altitude())                 //la pente va en montant
  760.                                 {
  761.                                     if(C(ii,jj,k).retour_altitude()>C(ii,jj+1,k).retour_altitude())
  762.                                     {
  763.                                         goto hop2;
  764.                                     }
  765.                                     aval+=(C(ii,jj+1,k).retour_valeur()+norm_pente(C(ii,jj+1,k).retour_pente())+norm_pluie(pluie))*(coef_aval)*(coef_prox);
  766.                                 }*/
  767.                             }
  768.                         }
  769.                         hop2:
  770.  
  771.                         /*fin d'aval*/
  772.                     }
  773.  
  774.                     somme1=amont+voisins+aval;    //addition finale
  775.  
  776.                     nvaleur=C(i,j,k).retour_valeur()+normalisation(somme1);
  777.                     C(i,j,k+1).set_valeur(nvaleur);
  778.  
  779.                     if(C(i,j,k+1).retour_valeur()<0)   
  780.                         C(i,j,k+1).set_valeur(0);
  781.                     if(C(i,j,k+1).retour_valeur()>valeur_max)
  782.                         C(i,j,k+1).set_valeur(valeur_max);
  783.  
  784.                     if(j<AMONTMAX)
  785.                     {
  786.                         for(ii=i-1; ii<=i+1; ii++)
  787.                         {
  788.                             for(jj=j-AMONTMAX; jj<=-1; jj++)
  789.                             {
  790.                                 C(ii,jj,k).set_altitude(C(ii,jj-1,k)
  791.                                 .retour_altitude()-(pente/resolution));
  792.                             }
  793.                         }
  794.                     }
  795.  
  796.                     if(j>(jmax-1-AVALMAX))
  797.                     {
  798.                         for(ii=i-1; ii<=i+1; ii++)
  799.                         {
  800.                             for(jj=j+AVALMAX; jj>=jmax; jj--)
  801.                             {
  802.                                 C(ii,jj,k).set_altitude(C(ii,jj+1,k)
  803.                                 .retour_altitude()+(pente/resolution));
  804.                             }
  805.                         }
  806.                     }
  807.  
  808.                     if(previsual)
  809.                     {
  810.                         switch(C(i,j,k).retour_valeur())
  811.                         {
  812.                             case(0):
  813.                             {
  814.                                 RectFill ( &winport_blanc, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  815.                             }
  816.                                 break;
  817.                             case(1):
  818.                             {
  819.                                 RectFill ( &winport_gris1, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  820.                             }
  821.                                 break;
  822.                             case(2):
  823.                             {
  824.                                 RectFill ( &winport_gris2, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  825.                             }
  826.                                 break;
  827.                             case(3):
  828.                             {
  829.                                 RectFill ( &winport_gris3, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  830.                             }
  831.                                 break;
  832.                             case(4):
  833.                             {
  834.                                 RectFill ( &winport_gris4, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  835.                             }
  836.                                 break;
  837.                             case(5):
  838.                             {
  839.                                 RectFill ( &winport_gris5, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  840.                             }
  841.                                 break;
  842.                             case(6):
  843.                             {
  844.                                 RectFill ( &winport_gris6, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  845.                             }
  846.                                 break;
  847.                             case(7):
  848.                             {
  849.                                 RectFill ( &winport_gris7, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  850.                             }
  851.                                 break;
  852.                             case(8):
  853.                             {
  854.                                 RectFill ( &winport_gris8, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  855.                             }
  856.                                 break;
  857.                             case(9):
  858.                             {
  859.                                 RectFill ( &winport_gris9, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  860.                             }
  861.                                 break;
  862.                             case(10):
  863.                             {
  864.                                 RectFill ( &winport_gris10, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  865.                             }
  866.                                 break;
  867.                             case(11):
  868.                             {
  869.                                 RectFill ( &winport_gris11, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  870.                             }
  871.                                 break;
  872.                             case(12):
  873.                             {
  874.                                 RectFill ( &winport_gris12, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  875.                             }
  876.                                 break;
  877.                             case(13):
  878.                             {
  879.                                 RectFill ( &winport_gris13, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  880.                             }
  881.                                 break;
  882.                             case(14):
  883.                             {
  884.                                 RectFill ( &winport_gris14, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  885.                             }
  886.                                 break;
  887.                             case(15):
  888.                             {
  889.                                 RectFill ( &winport_noir, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  890.                             }
  891.                                 break;
  892.                             default:
  893.                                 break;
  894.                         }
  895.                     }                    
  896.                     escape_termite:
  897.                 }
  898.                 interrupt=IO_boucle();
  899.                 if(interrupt)
  900.                 {
  901.                     printf("interruption\n");
  902.                     goto interruption;
  903.                 }
  904.                 temp_tick=j+1;
  905.                 tick=inttostring(temp_tick);
  906.                 Emperor_SetGadgetAttr(Fuelgauge2, tick);
  907.             }
  908.             temp_tick=k+1;
  909.             tick=inttostring(temp_tick);
  910.             Emperor_SetGadgetAttr(Fuelgauge3, tick);
  911.         }
  912.     }
  913.     interruption:
  914.     if(interrupt)
  915.     {
  916.         SetGadgetAttrs(Fuelgauge2, Window1, NULL, FUELGAUGE_Level, 0 , TAG_DONE);
  917.         SetGadgetAttrs(Fuelgauge3, Window1, NULL, FUELGAUGE_Level, 0 , TAG_DONE);
  918.         DoMethod(winobj, WM_CLOSE);
  919.         win=NULL;
  920.         winobj=NULL;
  921.     }
  922.  
  923. /*mettre à jour les gadgets concernés pour la seconde phase*/
  924.  
  925.     SetGadgetAttrs(Fuelgauge2, Window1, NULL, FUELGAUGE_Level, 0 , TAG_DONE);
  926.     SetGadgetAttrs(Fuelgauge3, Window1, NULL, FUELGAUGE_Level, 0 , TAG_DONE);
  927.     SetGadgetAttrs(Button3, Window1, NULL, GA_Disabled, TRUE, TAG_DONE);
  928.     SetGadgetAttrs(Button6, Window1, NULL, GA_Disabled, FALSE, TAG_DONE);
  929.     SetGadgetAttrs(Button7, Window1, NULL, GA_Disabled, FALSE, TAG_DONE);
  930.     SetGadgetAttrs(Button8, Window1, NULL, GA_Disabled, FALSE, TAG_DONE);
  931.  
  932. /*fin de mise à jour*/
  933.  
  934. /*reception des signaux après calcul*/
  935.  
  936.     if(!previsual)
  937.     {
  938.         win = RA_OpenWindow (winobj);
  939.         winport = win->RPort;
  940.         winport_noir = *win->RPort;
  941.         winport_blanc = *win->RPort;
  942.         winport_gris1 = *win->RPort;
  943.         winport_gris2 = *win->RPort;
  944.         winport_gris3 = *win->RPort;
  945.         winport_gris4 = *win->RPort;
  946.         winport_gris5 = *win->RPort;
  947.         winport_gris6 = *win->RPort;
  948.         winport_gris7 = *win->RPort;
  949.         winport_gris8 = *win->RPort;
  950.         winport_gris9 = *win->RPort;
  951.         winport_gris10 = *win->RPort;
  952.         winport_gris11 = *win->RPort;
  953.         winport_gris12 = *win->RPort;
  954.         winport_gris13 = *win->RPort;
  955.         winport_gris14 = *win->RPort;
  956.         SetAPen( &winport_noir, noir );
  957.         SetAPen( &winport_blanc, blanc );
  958.         SetAPen( &winport_gris1, gris1 );
  959.         SetAPen( &winport_gris2, gris2 );
  960.         SetAPen( &winport_gris3, gris3 );
  961.         SetAPen( &winport_gris4, gris4 );
  962.         SetAPen( &winport_gris5, gris5 );
  963.         SetAPen( &winport_gris6, gris6 );
  964.         SetAPen( &winport_gris7, gris7 );
  965.         SetAPen( &winport_gris8, gris8 );
  966.         SetAPen( &winport_gris9, gris9 );
  967.         SetAPen( &winport_gris10, gris10 );
  968.         SetAPen( &winport_gris11, gris11 );
  969.         SetAPen( &winport_gris12, gris12 );
  970.         SetAPen( &winport_gris13, gris13 );
  971.         SetAPen( &winport_gris14, gris14 );
  972.     }
  973.     fermer=FALSE;
  974.     Emperor_Input=0L;
  975.     do
  976.     {
  977.         while((Emperor_Input = RA_HandleInput(WindowObject1, &Emperor_Code)) != WMHI_LASTMSG)
  978.         {
  979.             //printf("input reçu: %d\n", Emperor_Input);
  980.             switch(Emperor_Input & WMHI_CLASSMASK)
  981.             {
  982.                 case WMHI_GADGETUP:
  983.                     switch(Emperor_Input & WMHI_GADGETMASK)
  984.                     {
  985.                         case 39:
  986.                             Button3_GadgetUp_Event();
  987.                             break;
  988.                         case 42:
  989.                             //Button6_GadgetUp_Event();
  990.                             //printf("case fermer: %d\n");
  991.                             DoMethod(winobj, WM_CLOSE);
  992.                             win=NULL;
  993.                             winobj=NULL;
  994.                             fermer=TRUE;
  995.                             break;
  996.                         case 46:
  997.                             //Button7_GadgetUp_Event();
  998.                             for(k=kmax-1; k>=0; k--)
  999.                             {
  1000.                                 for(j=0; j<jmax; j++)
  1001.                                 {
  1002.                                     for(i=0;i<imax; i++)
  1003.                                     {
  1004.                                         switch(C(i,j,k).retour_valeur())
  1005.                                         {
  1006.                                             case(0):
  1007.                                             {
  1008.                                                 RectFill ( &winport_blanc, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1009.                                             }
  1010.                                                 break;
  1011.                                             case(1):
  1012.                                             {
  1013.                                                 RectFill ( &winport_gris1, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1014.                                             }
  1015.                                                 break;
  1016.                                             case(2):
  1017.                                             {
  1018.                                                 RectFill ( &winport_gris2, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1019.                                             }
  1020.                                                 break;
  1021.                                             case(3):
  1022.                                             {
  1023.                                                 RectFill ( &winport_gris3, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1024.                                             }
  1025.                                                 break;
  1026.                                             case(4):
  1027.                                             {
  1028.                                                 RectFill ( &winport_gris4, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1029.                                             }
  1030.                                                 break;
  1031.                                             case(5):
  1032.                                             {
  1033.                                                 RectFill ( &winport_gris5, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1034.                                             }
  1035.                                                 break;
  1036.                                             case(6):
  1037.                                             {
  1038.                                                 RectFill ( &winport_gris6, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1039.                                             }
  1040.                                                 break;
  1041.                                             case(7):
  1042.                                             {
  1043.                                                 RectFill ( &winport_gris7, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1044.                                             }
  1045.                                                 break;
  1046.                                             case(8):
  1047.                                             {
  1048.                                                 RectFill ( &winport_gris8, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1049.                                             }
  1050.                                                 break;
  1051.                                             case(9):
  1052.                                             {
  1053.                                                 RectFill ( &winport_gris9, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1054.                                             }
  1055.                                                 break;
  1056.                                             case(10):
  1057.                                             {
  1058.                                                 RectFill ( &winport_gris10, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1059.                                             }
  1060.                                                 break;
  1061.                                             case(11):
  1062.                                             {
  1063.                                                 RectFill ( &winport_gris11, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1064.                                             }
  1065.                                                 break;
  1066.                                             case(12):
  1067.                                             {
  1068.                                                 RectFill ( &winport_gris12, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1069.                                             }
  1070.                                                 break;
  1071.                                             case(13):
  1072.                                             {
  1073.                                                 RectFill ( &winport_gris13, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1074.                                             }
  1075.                                                 break;
  1076.                                             case(14):
  1077.                                             {
  1078.                                                 RectFill ( &winport_gris14, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1079.                                             }
  1080.                                                 break;
  1081.                                             case(15):
  1082.                                             {
  1083.                                                 RectFill ( &winport_noir, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1084.                                             }
  1085.                                                 break;
  1086.                                             default:
  1087.                                                 break;
  1088.                                         }
  1089.                                     }
  1090.                                 }
  1091.                                 temp_tick=k;
  1092.                                 tick=inttostring(temp_tick);
  1093.                                 Emperor_SetGadgetAttr(Fuelgauge3, tick);
  1094.                             }
  1095.                             break;
  1096.                         case 47:
  1097.                             //Button8_GadgetUp_Event();
  1098.                             for(k=0; k<kmax; k++)
  1099.                             {
  1100.                                 for(j=0; j<jmax; j++)
  1101.                                 {
  1102.                                     for(i=0;i<imax; i++)
  1103.                                     {
  1104.                                         switch(C(i,j,k).retour_valeur())
  1105.                                         {                                            
  1106.                                             case(0):
  1107.                                             {
  1108.                                                 RectFill ( &winport_blanc, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1109.                                             }
  1110.                                                 break;
  1111.                                             case(1):
  1112.                                             {
  1113.                                                 RectFill ( &winport_gris1, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1114.                                             }
  1115.                                                 break;
  1116.                                             case(2):
  1117.                                             {
  1118.                                                 RectFill ( &winport_gris2, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1119.                                             }
  1120.                                                 break;
  1121.                                             case(3):
  1122.                                             {
  1123.                                                 RectFill ( &winport_gris3, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1124.                                             }
  1125.                                                 break;
  1126.                                             case(4):
  1127.                                             {
  1128.                                                 RectFill ( &winport_gris4, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1129.                                             }
  1130.                                                 break;
  1131.                                             case(5):
  1132.                                             {
  1133.                                                 RectFill ( &winport_gris5, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1134.                                             }
  1135.                                                 break;
  1136.                                             case(6):
  1137.                                             {
  1138.                                                 RectFill ( &winport_gris6, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1139.                                             }
  1140.                                                 break;
  1141.                                             case(7):
  1142.                                             {
  1143.                                                 RectFill ( &winport_gris7, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1144.                                             }
  1145.                                                 break;
  1146.                                             case(8):
  1147.                                             {
  1148.                                                 RectFill ( &winport_gris8, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1149.                                             }
  1150.                                                 break;
  1151.                                             case(9):
  1152.                                             {
  1153.                                                 RectFill ( &winport_gris9, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1154.                                             }
  1155.                                                 break;
  1156.                                             case(10):
  1157.                                             {
  1158.                                                 RectFill ( &winport_gris10, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1159.                                             }
  1160.                                                 break;
  1161.                                             case(11):
  1162.                                             {
  1163.                                                 RectFill ( &winport_gris11, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1164.                                             }
  1165.                                                 break;
  1166.                                             case(12):
  1167.                                             {
  1168.                                                 RectFill ( &winport_gris12, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1169.                                             }
  1170.                                                 break;
  1171.                                             case(13):
  1172.                                             {
  1173.                                                 RectFill ( &winport_gris13, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1174.                                             }
  1175.                                                 break;
  1176.                                             case(14):
  1177.                                             {
  1178.                                                 RectFill ( &winport_gris14, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1179.                                             }
  1180.                                                 break;
  1181.                                             case(15):
  1182.                                             {
  1183.                                                 RectFill ( &winport_noir, (i*zoom)+20, (j*zoom)+20, (i*zoom)+zoom+20, (j*zoom)+zoom+20);
  1184.                                             }
  1185.                                                 break;
  1186.                                             default:
  1187.                                                 break;
  1188.                                         }
  1189.                                     }
  1190.                                 }
  1191.                                 temp_tick=k+1;
  1192.                                 tick=inttostring(temp_tick);
  1193.                                 Emperor_SetGadgetAttr(Fuelgauge3, tick);
  1194.                             }
  1195.                             break;
  1196.                         default:
  1197.                             fermer=FALSE;
  1198.                             break;
  1199.                     }
  1200.                 default:
  1201.                     break;
  1202.             }
  1203.         }
  1204.     }
  1205.     while(fermer==FALSE);
  1206.  
  1207.     SetGadgetAttrs(String1, Window1, NULL, GA_Disabled, FALSE, TAG_DONE);
  1208.     SetGadgetAttrs(Integer1, Window1, NULL, GA_Disabled, FALSE, TAG_DONE);
  1209.     SetGadgetAttrs(Integer2, Window1, NULL, GA_Disabled, FALSE, TAG_DONE);
  1210.     SetGadgetAttrs(Integer3, Window1, NULL, GA_Disabled, FALSE, TAG_DONE);
  1211.     SetGadgetAttrs(Integer4, Window1, NULL, GA_Disabled, FALSE, TAG_DONE);
  1212.     SetGadgetAttrs(Integer5, Window1, NULL, GA_Disabled, FALSE, TAG_DONE);
  1213.     SetGadgetAttrs(Integer6, Window1, NULL, GA_Disabled, FALSE, TAG_DONE);
  1214.     SetGadgetAttrs(Button1, Window1, NULL, GA_Disabled, FALSE, TAG_DONE);
  1215.     SetGadgetAttrs(Button2, Window1, NULL, GA_Disabled, FALSE, TAG_DONE);
  1216.     SetGadgetAttrs(Slider1, Window1, NULL, GA_Disabled, FALSE, TAG_DONE);
  1217.     SetGadgetAttrs(Checkbox1, Window1, NULL, GA_Disabled, FALSE, TAG_DONE);
  1218.     SetGadgetAttrs(Checkbox2, Window1, NULL, GA_Disabled, FALSE, TAG_DONE);
  1219.  
  1220. /*fin de reception*/
  1221.  
  1222.     /*int choix_gen[101]={0};
  1223.     char *pgm=0;
  1224.     for(i=0; i<=kmax; i++)
  1225.     {
  1226.         choix_gen[i]=i;
  1227.     }
  1228.     for(l=0; l<kmax; l++)
  1229.     {
  1230.         k=choix_gen[l];
  1231.         pgm=new char[10];
  1232.         strcpy(pgm, pioche_pgm(k));
  1233.         fz = fopen(pgm, "w");
  1234.         fputs ("P2\n", fz);
  1235.         fputs ("# ", fz);
  1236.         fputs(pgm, fz);
  1237.         fputs ("  \n", fz);
  1238.         fputs (inttostring(imax), fz);
  1239.         fputs ("  ", fz);
  1240.         fputs (inttostring(jmax), fz);
  1241.         fputs ("  \n", fz);
  1242.         fputs (inttostring(valeur_max+1), fz);
  1243.         fputs ("  \n", fz);
  1244.         for(j=0; j<jmax; j++)
  1245.         {
  1246.             for(i=0; i<imax; i++)
  1247.             {
  1248.                 fputs (inttostring((C(i,j,k).retour_valeur()-valeur_max)*(-1)), fz);
  1249.                 fputs ("  ", fz);
  1250.             }
  1251.             fputs (" \n", fz);
  1252.         }
  1253.         delete [] pgm;
  1254.         fclose(fz);
  1255.     }*/
  1256.     SetGadgetAttrs(Button3, Window1, NULL, GA_Disabled, TRUE, TAG_DONE);
  1257.     SetGadgetAttrs(Button6, Window1, NULL, GA_Disabled, TRUE, TAG_DONE);
  1258.     SetGadgetAttrs(Button7, Window1, NULL, GA_Disabled, TRUE, TAG_DONE);
  1259.     SetGadgetAttrs(Button8, Window1, NULL, GA_Disabled, TRUE, TAG_DONE);
  1260. }  
  1261.  
  1262. void Window1_Iconify_Event(void)
  1263. {
  1264.     Emperor_IconifyWindow_Window1();
  1265. }
  1266.  
  1267. void Window1_Uniconify_Event(void)
  1268. {    
  1269.     Emperor_UniconifyWindow_Window1();
  1270. }
  1271.  
  1272. void Button3_GadgetUp_Event(void)
  1273. {
  1274. }
  1275.  
  1276. void Button4_GadgetUp_Event(void)
  1277. {
  1278. }
  1279.  
  1280. void Button5_GadgetUp_Event(void)
  1281. {
  1282. }
  1283.  
  1284. void Button6_GadgetUp_Event(void)
  1285. {
  1286. }
  1287.  
  1288. void Button7_GadgetUp_Event(void)
  1289. {
  1290. }
  1291.  
  1292. void Button8_GadgetUp_Event(void)
  1293. {
  1294. }
  1295.  
  1296.